iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
JavaScript

30天享用JavaScript概念三明治系列 第 29

Day29:區塊範疇

  • 分享至 

  • xImage
  •  
  • 作用域,又稱作範疇(Scope)
  • 宣告變數用的關鍵字除了既有的var,在ES6之後新增了letconst。使得除了只能用函式定義範疇,也能以區塊定義。

區塊(Block)

  • 區塊通常由大括號 {} 定義,比如可以在if判斷式、for迴圈語法中看見。
if (true) {
  // Hi,我是區塊。
}
for (let i = 0; i < 5; i++) {
  console.log(i); // Hi,我也是區塊
}

區塊範疇(Block Scope)(P3-14)

  • 在JavaScript中,區塊範疇是指變數在某一區塊內的作用範圍。

  • 在某個區塊內定義的變數只在該區塊內可見,區塊外無法取得這些變數。

  • letconst都具有區塊範疇,因此使用letconst定義的變數只在它們所在的區塊內有效。

  • 相對的var,具有函式範疇(或稱全域範疇),即使它是在區塊內聲明,它的作用範圍仍是函式內(或全域作用範圍)。

  • 範例:

function testBlockScope() {
  if (true) {
    var a = 10 // a變數經由var宣告,具有函式範疇,在這個if區塊內有效。
    let b = 20; // b變數經由let宣告,具有區塊範疇,只在這個if區塊內有效。
    console.log(a); // 輸出 10
    console.log(b); // 輸出 20  
  }
  console.log(a); // a變數經由var宣告,在函式內的所有區塊內都可見,所以在這個if區塊外也有效:輸出 10
  console.log(b); // b變數經由let宣告,因此在這個if區塊外無效會報錯:ReferenceError: a is not defined。
}

testBlockScope();

上一篇
Day28:陳述式&表達式
下一篇
Day30:ES6後變數宣告方式const、let
系列文
30天享用JavaScript概念三明治30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言